(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Karamov Ilshat aka KAA (kaa2@pisem.net)
Title=Kinoafisha (RU)
Description=Import from www.kinoafisha.ru
Site=www.kinoafisha.ru
Language=RU
Version=1.0
Requires=3.5.0
Comments=Доступ к описаниям фильмов, размещенных на сайте www.kinoafisha.ru
License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
GetInfo=1
[Options]
***************************************************)
program Kinoafisha_ru;
const
BaseAddress = 'http://www.kinoafisha.ru/';
var
MovieName: string;
//==============================================================================
procedure AnalyzePage(Address: string);
var
Page: TStringList;
BeginPos, EndPos: Integer;
AddressText, HTMLText : string;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
HTMLText := Page.Text;
PickTreeClear;
PickTreeAdd('Доступные фильмы', '');
if Pos('Результаты поиска на KinoAfisha.ru', HTMLText) <> 0 then
begin
BeginPos := Pos('Найдены фильмы:', HTMLText)+Length('Найдены фильмы:');
if BeginPos=0 then
BeginPos := Pos('Найдены фильмы:', HTMLText)+Length('Найдены фильмы:');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos(' ', HTMLText);
HTMLText := Copy(HTMLText, 0, EndPos);
Page.Text:=Trim(HTMLText);
AddMoviesTitles(Page);
if PickTreeExec(AddressText) then
begin
Page.Text := GetPage(AddressText);
// URL
if CanSetField(fieldURL) then
SetField(fieldURL, AddressText);
AnalyzeVideoPage(Page);
end;
end
else
begin
if Pos('Извините, ничего не найдено', HTMLText) = 0 then
begin
// Наименование
BeginPos := Pos('
', HTMLText)+Length('');
EndPos := Pos(' - Киноафиша Ру', HTMLText);
MovieName := Copy(HTMLText, BeginPos, EndPos-BeginPos);
PickTreeAdd(MovieName, Address);
if PickTreeExec(AddressText) then
begin
// URL
if CanSetField(fieldURL) then
SetField(fieldURL, Address);
Page.Text := HTMLText;
AnalyzeVideoPage(Page);
end;
end;
end;
Page.Free;
end;
//==============================================================================
procedure AddMoviesTitles(Page: TStringList);
var
i: integer;
Line: string;
MovieTitle, MovieAddress: string;
StartPos, EndPos: Integer;
begin
for i:=0 to Page.Count-1 do
begin
Line := Page.GetString(i);
if Line='' then
Continue;
StartPos := Pos('', Line);
MovieAddress := BaseAddress+Copy(Line, 0, EndPos-1);
StartPos := Pos('">', Line);
EndPos := Pos('', Line);
MovieTitle := Copy(Line, StartPos+Length('">'), EndPos);
HTMLRemoveTags(MovieTitle);
PickTreeAdd(MovieTitle, MovieAddress);
end;
end;
//==============================================================================
procedure AnalyzeVideoPage(Page: TStringList);
var
HTMLText, HTMLText1: string;
BeginPos, EndPos: Integer;
MovieName, MovieNameTrans, MovieNameOrig, MovieDirector,
MovieYear, MovieCategory, MovieRating,
MoviePictureAddress, MovieLength, MovieCountry,
MovieDescription, MovieActors, MovieProducer,
MovieComments: string;
begin
HTMLText:=Page.Text;
if Pos('Киноафиша Ру', HTMLText) = 0 then
exit;
// Наименование
BeginPos := Pos('', HTMLText)+Length('');
EndPos := Pos(' - Киноафиша Ру', HTMLText);
MovieName := Copy(HTMLText, BeginPos, EndPos-BeginPos);
EndPos := Pos(' - ', MovieName);
MovieNameTrans := Copy(MovieName, 0, EndPos);
BeginPos := Pos(' - ', MovieName)+Length(' - ');
MovieNameOrig := Copy(MovieName, BeginPos, Length(MovieName));
if CanSetField(fieldTranslatedTitle) then
SetField(fieldTranslatedTitle, MovieNameTrans);
// Оригинальное наименование
if CanSetField(fieldOriginalTitle) then
SetField(fieldOriginalTitle, MovieNameOrig);
// Режиссеры
if CanSetField(fieldDirector) then
begin
if Pos('Режиссер
0 then
begin
BeginPos := Pos('Режиссер
Режиссер
', HTMLText1)+Length('>');
EndPos := Pos('
', HTMLText1);
MovieDirector := Copy(HTMLText1, BeginPos, EndPos-BeginPos);
HTMLRemoveTags(MovieDirector);
MovieDirector:=Trim(MovieDirector);
SetField(fieldDirector, Trim(MovieDirector));
end
else
begin
if Pos('Режиссёр:', HTMLText) <> 0 then
begin
BeginPos := Pos('Режиссёр:', HTMLText)+Length('Режиссёр:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('.', HTMLText1);
MovieDirector := Trim(Copy(HTMLText1, 0, EndPos-1));
HTMLRemoveTags(MovieDirector);
SetField(fieldDirector, MovieDirector);
end
if Pos('Режиссер:', HTMLText) <> 0 then
begin
BeginPos := Pos('Режиссер:', HTMLText)+Length('Режиссер:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('.', HTMLText1);
MovieDirector := Trim(Copy(HTMLText1, 0, EndPos-1));
HTMLRemoveTags(MovieDirector);
SetField(fieldDirector, MovieDirector);
end
end;
end;
// Год
if CanSetField(fieldYear) then
begin
if Pos('(', HTMLText) <> 0 then
begin
BeginPos := Pos('(', HTMLText)+Length('(');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos(')', HTMLText1);
MovieYear := Copy(HTMLText1, 0, EndPos-1);
SetField(fieldYear, MovieYear);
end;
end;
// Жанр
if CanSetField(fieldCategory) then
begin
if Pos('Жанр: ', HTMLText) <> 0 then
begin
BeginPos := Pos('Жанр: ', HTMLText)+Length('Жанр: ');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('', HTMLText1);
MovieCategory := Copy(HTMLText1, 0, EndPos-1);
SetField(fieldCategory, MovieCategory);
end;
end;
// Рейтинг
if CanSetField(fieldRating) then
begin
if Pos('Наш рейтинг:', HTMLText) <> 0 then
begin
BeginPos := Pos('Наш рейтинг:', HTMLText)+Length('Наш рейтинг:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
BeginPos := Pos('', HTMLText1)+Length('');
EndPos := Pos('', HTMLText1);
MovieRating := Copy(HTMLText1, BeginPos, EndPos-BeginPos);
SetField(fieldRating, MovieRating);
end;
end;
// Продолжительность
if CanSetField(fieldLength) then
begin
if Pos('Продолжительность:', HTMLText) <> 0 then
begin
BeginPos := Pos('Продолжительность:', HTMLText)+Length('Продолжительность:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('минут
', HTMLText1);
MovieLength := Trim(Copy(HTMLText1, 0, EndPos-1));
SetField(fieldLength, MovieLength);
end;
end;
// Страна
if CanSetField(fieldCountry) then
begin
if Pos('Страна:', HTMLText) <> 0 then
begin
BeginPos := Pos('Страна:', HTMLText)+Length('Страна:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('
', HTMLText1);
MovieCountry := Trim(Copy(HTMLText1, 0, EndPos-1));
SetField(fieldCountry, MovieCountry);
end;
end;
// Фабула
if CanSetField(fieldDescription) then
begin
if Pos('Фабула:', HTMLText) <> 0 then
begin
BeginPos := Pos('Фабула:', HTMLText)+Length('Фабула:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('
', HTMLText1);
MovieDescription := Trim(Copy(HTMLText1, 0, EndPos-1));
SetField(fieldDescription, MovieDescription);
end;
end;
// Актеры
if CanSetField(fieldActors) then
begin
if Pos('В ролях:', HTMLText) <> 0 then
begin
BeginPos := Pos('В ролях:', HTMLText)+Length('В ролях:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('.', HTMLText1);
MovieActors := Trim(Copy(HTMLText1, 0, EndPos-1));
SetField(fieldActors, MovieActors);
end
else
begin
if Pos('Звезды:', HTMLText) <> 0 then
begin
BeginPos := Pos('Звезды:', HTMLText)+Length('Звезды:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('
', HTMLText1);
MovieActors := Trim(Copy(HTMLText1, 0, EndPos-1));
HTMLRemoveTags(MovieActors);
SetField(fieldActors, MovieActors);
end
end;
end;
// Продюсеры
if CanSetField(fieldProducer) then
begin
if Pos('Продюсер:', HTMLText) <> 0 then
begin
BeginPos := Pos('Продюсер:', HTMLText)+Length('Продюсер:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('.', HTMLText1);
MovieProducer := Trim(Copy(HTMLText1, 0, EndPos-1));
SetField(fieldProducer, MovieProducer);
end
else
begin
if Pos('Продюсеры:', HTMLText) <> 0 then
begin
BeginPos := Pos('Продюсеры:', HTMLText)+Length('Продюсеры:');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos('.', HTMLText1);
MovieProducer := Trim(Copy(HTMLText1, 0, EndPos-1));
SetField(fieldProducer, MovieProducer);
end
end;
end;
// Коментарий
if CanSetField(fieldComments) then
begin
if Pos('Рецензия', HTMLText) <> 0 then
begin
BeginPos := Pos('Рецензия', HTMLText);//+Length('Рецензия');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
EndPos := Pos(' 0 then
begin
BeginPos := Pos('filmname', HTMLText)+Length('filmname');
HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
BeginPos := Pos('>![]() |